#ifndef _MIPS1_BHV_MACROS_H
#define _MIPS1_BHV_MACROS_H

typedef ac_memport<mips1_parms::ac_word, mips1_parms::ac_Hword> ac_memory;

#define ac_behavior(instr) AC_BEHAVIOR_##instr ()

#define AC_BEHAVIOR_instruction() mips1_parms::mips1_isa::_behavior_instruction(unsigned int op)

#define AC_BEHAVIOR_begin() mips1_parms::mips1_isa::_behavior_begin()
#define AC_BEHAVIOR_end() mips1_parms::mips1_isa::_behavior_end()

#define AC_BEHAVIOR_Type_R() mips1_parms::mips1_isa::_behavior_mips1_Type_R(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_Type_I() mips1_parms::mips1_isa::_behavior_mips1_Type_I(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_Type_J() mips1_parms::mips1_isa::_behavior_mips1_Type_J(unsigned int op, unsigned int addr)

#define AC_BEHAVIOR_lb() mips1_parms::mips1_isa::behavior_lb(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_lbu() mips1_parms::mips1_isa::behavior_lbu(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_lh() mips1_parms::mips1_isa::behavior_lh(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_lhu() mips1_parms::mips1_isa::behavior_lhu(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_lw() mips1_parms::mips1_isa::behavior_lw(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_lwl() mips1_parms::mips1_isa::behavior_lwl(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_lwr() mips1_parms::mips1_isa::behavior_lwr(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_sb() mips1_parms::mips1_isa::behavior_sb(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_sh() mips1_parms::mips1_isa::behavior_sh(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_sw() mips1_parms::mips1_isa::behavior_sw(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_swl() mips1_parms::mips1_isa::behavior_swl(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_swr() mips1_parms::mips1_isa::behavior_swr(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_addi() mips1_parms::mips1_isa::behavior_addi(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_addiu() mips1_parms::mips1_isa::behavior_addiu(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_slti() mips1_parms::mips1_isa::behavior_slti(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_sltiu() mips1_parms::mips1_isa::behavior_sltiu(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_andi() mips1_parms::mips1_isa::behavior_andi(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_ori() mips1_parms::mips1_isa::behavior_ori(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_xori() mips1_parms::mips1_isa::behavior_xori(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_lui() mips1_parms::mips1_isa::behavior_lui(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_add() mips1_parms::mips1_isa::behavior_add(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_addu() mips1_parms::mips1_isa::behavior_addu(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_sub() mips1_parms::mips1_isa::behavior_sub(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_subu() mips1_parms::mips1_isa::behavior_subu(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_slt() mips1_parms::mips1_isa::behavior_slt(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_sltu() mips1_parms::mips1_isa::behavior_sltu(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_instr_and() mips1_parms::mips1_isa::behavior_instr_and(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_instr_or() mips1_parms::mips1_isa::behavior_instr_or(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_instr_xor() mips1_parms::mips1_isa::behavior_instr_xor(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_instr_nor() mips1_parms::mips1_isa::behavior_instr_nor(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_nop() mips1_parms::mips1_isa::behavior_nop(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_sll() mips1_parms::mips1_isa::behavior_sll(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_srl() mips1_parms::mips1_isa::behavior_srl(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_sra() mips1_parms::mips1_isa::behavior_sra(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_sllv() mips1_parms::mips1_isa::behavior_sllv(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_srlv() mips1_parms::mips1_isa::behavior_srlv(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_srav() mips1_parms::mips1_isa::behavior_srav(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_mult() mips1_parms::mips1_isa::behavior_mult(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_multu() mips1_parms::mips1_isa::behavior_multu(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_div() mips1_parms::mips1_isa::behavior_div(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_divu() mips1_parms::mips1_isa::behavior_divu(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_mfhi() mips1_parms::mips1_isa::behavior_mfhi(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_mthi() mips1_parms::mips1_isa::behavior_mthi(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_mflo() mips1_parms::mips1_isa::behavior_mflo(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_mtlo() mips1_parms::mips1_isa::behavior_mtlo(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_j() mips1_parms::mips1_isa::behavior_j(unsigned int op, unsigned int addr)
#define AC_BEHAVIOR_jal() mips1_parms::mips1_isa::behavior_jal(unsigned int op, unsigned int addr)
#define AC_BEHAVIOR_jr() mips1_parms::mips1_isa::behavior_jr(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_jalr() mips1_parms::mips1_isa::behavior_jalr(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_beq() mips1_parms::mips1_isa::behavior_beq(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_bne() mips1_parms::mips1_isa::behavior_bne(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_blez() mips1_parms::mips1_isa::behavior_blez(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_bgtz() mips1_parms::mips1_isa::behavior_bgtz(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_bltz() mips1_parms::mips1_isa::behavior_bltz(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_bgez() mips1_parms::mips1_isa::behavior_bgez(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_bltzal() mips1_parms::mips1_isa::behavior_bltzal(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_bgezal() mips1_parms::mips1_isa::behavior_bgezal(unsigned int op, unsigned int rs, unsigned int rt, int imm)
#define AC_BEHAVIOR_sys_call() mips1_parms::mips1_isa::behavior_sys_call(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)
#define AC_BEHAVIOR_instr_break() mips1_parms::mips1_isa::behavior_instr_break(unsigned int op, unsigned int rs, unsigned int rt, unsigned int rd, unsigned int shamt, unsigned int func)


#endif //_MIPS1_BHV_MACROS_H

